
//
// data center
//
@interface DataCenter : NSObject

//
// database
//
@property(strong, nonatomic, readwrite) SQLiteDatabase*						database;

//
// domain
//
@property(strong, nonatomic, readwrite) NSString*							domain;

//
// user id
//
@property(assign, nonatomic, readwrite) NSInteger							userId;

//
// mail address
//
@property(strong, nonatomic, readwrite) NSString*							mailAddress;

//
// pass key
//
@property(strong, nonatomic, readwrite) NSString*							passKey;

//
// cookie nexusphp
//
@property(strong, nonatomic, readwrite) NSString*							cookieNexusPhp;

//
// push config
//
@property(strong, nonatomic, readwrite) PushConfig*							pushConfig;

//
// server list
//
@property(strong, nonatomic, readwrite) NSMutableArray*						serverList;

//
// singleton
//
+ (DataCenter*)sharedDataCenter;

//
// load
//
- (void)loadDomain:(NSString*)domain;

//
// invalid user info
//
- (void)invalidUserInfo;

//
// save user info
//
- (void)saveUserInfo;

//
// save push config
//
- (void)savePushConfig;

//
// default push config
//
- (PushConfig*)defaultPushConfig;

//
// add server
//
- (void)addServerFromServerInfo:(ServerInfo*)serverInfo;

//
// update server at index
//
- (id<TorrentClient>)updateServerAtIndex:(NSInteger)index fromServerInfo:(ServerInfo*)serverInfo;

//
// remove server at index
//
- (void)removeServerAtIndex:(NSInteger)index;

//
// save server list
//
- (void)saveServerList;

//
// torrent info
//
- (TorrentInfo*)torrentInfoFromId:(NSInteger)torrentId;

//
// add torrent
//
- (BOOL)checkAddTorrent:(TorrentInfo*)info;

//
// mark as read
//
- (void)markAsReadForTorrentId:(NSInteger)torrentId;

//
// get file list
//
- (NSArray*)fileListForTorrentId:(NSInteger)torrentId;

//
// add file info
//
- (void)addFileInfo:(TorrentFileInfo*)info forTorrentId:(NSInteger)torrentId;

@end
